This page last changed on Aug 15, 2013 by kgomes.

In 2012, an effort started to design a communication backbone that would allow all MBARI assets to communicate easily across the organization. Much work has been done in computer science in the areas of message based systems over the years and this is an exploration of how those systems can make communications across MBARI assets much easier and more pervasive.

Communication/Messaging Systems

Technologies

Comparison

Feature/Framework LCM MOOS Player RabbitMQ ZeroMQ Carmen (IPC) JAUS ROS RDS DDS Apache Kafka MQTT
Target App Real-time systems Robotic Vehicles
(Under water mostly)
Robot control     Robot control   Robotics Development Robotics    
Transport UDP Multicast TCP TCP     TCP UDP
  • Shared Memory
  • TCP (most common)
  • UDP
  • Spread
Mulitple
  • SOAP
  • XML/RPC
   
Communications
Model(s)
pub/sub(push) pub/sub (pull) pub/sub(pull)     pub/sub (push) routed message
  • pub/sub
  • service oriented
service    
Messages Duplicated? N Y Y     Y Y Y Y    
Type safe? Y N N     N N N Y    
Marshalling
Technique
Automatice Manual - Free
form ASCII
XDR (automatic for C) Manual   Partial - users must keep an ASCII description
of types in sync with a C construct
Manual Automatic - Type specification language
similar to C
Automatic    
Server/
Central Hub?
N Y Y Y Y N    
Pros
  • Tools for introspection and analysis of the messaging traffic and the messages themselves
                   
Cons    
  • If subscriber can't
    keep up with publisher,
    TCP buffers can fill
    hurting performance
    Keeping ASCII/struct in sync
for marshalling is error prone due to
machines having different word sizes
  • Small subspace is available for user-defined types
  • Messages limited to 4096 bytes
  • Each node has to have globally unique ID
  • little endian, so big endian systems
    supported
  • More difficult to inject previously recorded data
   
Platforms
  • C
  • Java
  • Python
  • MATLAB
  • C++ (compatible)
  • Objective-C (compatible)
C++
  • C
  • C++
  • Java
  • Tcl
  • Python
   
  • C
  • Java
C
  • C++
  • Python
.NET    
Marshalling

Technologies

  1. Protocol Buffers
  2. LCM
  3. Avro
  4. Thrift
  5. MessagePack

Comparisons

Protocol Buffers LCM Avro Thrift MessagePack
  1. Protocol Buffers, Avro, Thrift & MessagePack

LCM_Technical_Paper.pdf (application/pdf)
LCM_White_Paper.pdf (application/pdf)
Document generated by Confluence on Feb 03, 2026 16:22